/**
 * 格式化时间戳为 小时 计时格式
 * @param {时间戳} stamp 
 */
const stampFormat = stamp => {
  stamp = +stamp / 1000;
  let hours = Math.floor(stamp / 60 / 60);
  let minutes = Math.floor(stamp / 60 % 60);
  let seconds = Math.floor(stamp % 60);
  hours = hours > 0 ? `${hours}:` : '';
  minutes = minutes < 10 ? `0${minutes}` : minutes;
  seconds = seconds < 10 ? `0${seconds}` : seconds;
  return `${hours}${minutes}:${seconds}`;
}

/**
 * 时间格式化
 * Y: 年
 * M: 月
 * D: 日
 * h: 时
 * m: 分
 * s: 秒
 * @param {dateObj} date 时间对象
 * @param {string} fmt 格式类型
 */
const formatDate = (date, fmt = 'YYYY-MM-DD hh:mm:ss') => {
  const year = date.getFullYear();
  date = {
    'M+': date.getMonth(),
    'D+': date.getDate(),
    'h+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds(),
  };
  if (/(Y+)/i.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, year.toString().substr(4 - RegExp.$1.length));
  }
  const dateKeys = Object.keys(date);
  dateKeys.forEach(key => {
    if (new RegExp(`(${key})`).test(fmt)) {
      fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1
        ? date[key] : (`00${date[key]}`).substr(date[key].toString().length));
    }
  });
  return fmt;
}

/**
 * 获取当天日期的字符串
 */
const getTodayDBName = () => {
  return formatDate(new Date(), 'YYYYMMDD');
}

export { stampFormat, formatDate, getTodayDBName };